# -*- coding: utf-8 -*-
import numpy as np
import cv2

def cv_show(img,name,writename):#
    cv2.imshow(name,img)
    cv2.imwrite(writename,img)
    cv2.waitKey()
    cv2.destroyAllWindows()
img = cv2.imread('contours.png')#读取图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度图
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#对灰度图二值化
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)#绘制图像轮廓
# print(contours)
# print(hierarchy)
#1.绘制轮廓
#传入绘制图像，轮廓，轮廓索引，颜色模式，线条厚度
#注意需要copy原图，因为处理的时候会修改原图
draw_img = img.copy()
res1 = cv2.drawContours(draw_img,contours[0],-1,(0,0,255),2)##0：外轮廓，-1指全部轮廓，1指内轮廓(0,0,255)为BGR颜色，2为线条宽度
res = np.hstack((img,res1))
cv_show(res,'res','res1.png')



# #2.轮廓特征
# cnt = contours[0]#轮廓结果 图像中的第0个轮廓
# #面积
# are = cv2.contourArea(cnt)#闭合轮廓才有周长和面积
# print(are)
# #周长
# length = cv2.arcLength(cnt,True)
# print(length)
# 3.轮廓近似




# cv2.findContours(img,mode,method)
#为了更高的准确率，使用二值化图像